package com.ruoyi.project.mahjong.service;

import java.math.BigDecimal;
import java.util.List;
import com.ruoyi.project.mahjong.domain.TMember;
import com.ruoyi.project.mahjong.domain.dto.RechargeDto;
import com.ruoyi.project.mahjong.domain.vo.MemberCountVo;
import com.ruoyi.project.mahjong.domain.vo.MemberIntegralVo;
import com.ruoyi.project.mahjong.domain.vo.RechargeCompleteVo;
import io.swagger.models.auth.In;

/**
 * 会员管理Service接口
 *
 * @author ruoyi
 * @date 2023-07-18
 */
public interface ITMemberService
{
    /**
     * 查询会员管理
     *
     * @param id 会员管理ID
     * @return 会员管理
     */
    public TMember selectTMemberById(Long id);

    /**
     * 查询会员管理列表
     *
     * @param tMember 会员管理
     * @return 会员管理集合
     */
    public List<TMember> selectTMemberList(TMember tMember);

    /**
     * 新增会员管理
     *
     * @param tMember 会员管理
     * @return 结果
     */
    public int insertTMember(TMember tMember);

    /**
     * 修改会员管理
     *
     * @param tMember 会员管理
     * @return 结果
     */
    public int updateTMember(TMember tMember);

    /**
     * 批量删除会员管理
     *
     * @param ids 需要删除的会员管理ID
     * @return 结果
     */
    public int deleteTMemberByIds(Long[] ids);

    /**
     * 删除会员管理信息
     *
     * @param id 会员管理ID
     * @return 结果
     */
    public int deleteTMemberById(Long id);

    List<String> getRecommend();

    List<TMember> recommend(TMember member,List<String> times);

    void goPollMember(TMember member);

    Integer updateTMemberById(Long id);

    Integer rollbackMember(Long id);


    List<TMember>  selectTMemberByShopId(Long shopId);

    RechargeCompleteVo updateTMemberMoney(RechargeDto dto, Long shopId, Long staffId);

    MemberCountVo selectMemberCountAndToDayAdd(Long shopId);

    /**
     * 修改会员退款
     * @param tMember
     * @return
     */
    Integer updateTMemberRefund(TMember tMember,Long userId,Long shopId,String remark);

    List<MemberIntegralVo> selectMemberIntegral(Long shopId,Long id, String startTime, String endTime);

    Integer updateTMemberProductCostMoney(BigDecimal costMoney, Long memberId,int intergral);

    /**
     * 按照会员名称模糊搜索
     * @param name
     * @param shopId
     * @return
     */
    List<TMember> selectMemberByLikeName(String name, Long shopId);

    /**
     * 会员赠送点数
     * @param money
     * @param id
     * @return
     */
    Integer updateGiveMoney(String money, String id);

    Integer updateTMemberSendMoney(Long memberId,BigDecimal money ,Long userId, Long shopId, String remark);

    void checkout(Long memberId, Long deskId);
}
